-
The
MGLFeature
protocol is used to provide details about geographic features contained in anMGLShapeSource
orMGLVectorTileSource
object. Each concrete subclass ofMGLShape
in turn has a subclass that conforms to this protocol. A feature object associates a shape with an optional identifier and attributes.You can add custom data to display on the map by creating feature objects and adding them to an
MGLShapeSource
using the-[MGLShapeSource initWithIdentifier:shape:options:]
method orMGLShapeSource.shape
property.In addition to adding data to the map, you can also extract data from the map:
-[MGLMapView visibleFeaturesAtPoint:]
and related methods return feature objects that correspond to features in the source. This enables you to inspect the properties of features in vector tiles loaded byMGLVectorTileSource
objects. You also reuse these feature objects as overlay annotations.While it is possible to add
MGLFeature
-conforming objects to the map as annotations using-[MGLMapView addAnnotations:]
and related methods, doing so has trade-offs:Features added as annotations will not have
identifier
orattributes
properties when used with feature querying.Features added as annotations become interactive. Taps and selection can be handled in
-[MGLMapViewDelegate mapView:didSelectAnnotation:]
.
Declaration
Objective-C
@protocol MGLFeature <MGLAnnotation>
Swift
protocol MGLFeature : MGLAnnotation
-
An
MGLPointFeature
object associates a point shape with an optional identifier and attributes.Related examples
See the Dynamically style interactive points example to learn how to initialize
MGLPointFeature
objects and add them to your map.Declaration
Objective-C
@interface MGLPointFeature : MGLPointAnnotation <MGLFeature>
Swift
class MGLPointFeature : MGLPointAnnotation, MGLFeature
-
An
MGLPolygonFeature
object associates a polygon shape with an optional identifier and attributes.Declaration
Objective-C
@interface MGLPolygonFeature : MGLPolygon <MGLFeature>
Swift
class MGLPolygonFeature : MGLPolygon, MGLFeature
-
An
MGLPolylineFeature
object associates a polyline shape with an optional identifier and attributes.A polyline feature is known as a LineString feature in GeoJSON.
Related examples
See the Add a line annotation from GeoJSON example to learn how to initialize an
MGLPolylineFeature
and add it to anMGLMapView
object.Declaration
Objective-C
@interface MGLPolylineFeature : MGLPolyline <MGLFeature>
Swift
class MGLPolylineFeature : MGLPolyline, MGLFeature
-
An
MGLMultiPolygonFeature
object associates a multipolygon shape with an optional identifier and attributes.Declaration
Objective-C
@interface MGLMultiPolygonFeature : MGLMultiPolygon <MGLFeature>
Swift
class MGLMultiPolygonFeature : MGLMultiPolygon, MGLFeature
-
An
MGLMultiPolylineFeature
object associates a multipolyline shape with an optional identifier and attributes.A multipolyline feature is known as a MultiLineString feature in GeoJSON.
Declaration
Objective-C
@interface MGLMultiPolylineFeature : MGLMultiPolyline <MGLFeature>
Swift
class MGLMultiPolylineFeature : MGLMultiPolyline, MGLFeature
-
An
MGLPointCollectionFeature
object associates a point collection with an optional identifier and attributes.A point collection feature is known as a MultiPoint feature in GeoJSON.
Declaration
Objective-C
@interface MGLPointCollectionFeature : MGLPointCollection <MGLFeature>
Swift
class MGLPointCollectionFeature : MGLPointCollection, MGLFeature
-
An
MGLShapeCollectionFeature
object associates a shape collection with an optional identifier and attributes.MGLShapeCollectionFeature
is most commonly used to add multiple shapes to a singleMGLShapeSource
. Configure the appearance of anMGLSource
’s shape collection collectively using anMGLSymbolStyleLayer
object, or use multiple instances ofMGLCircleStyleLayer
,MGLFillStyleLayer
, andMGLLineStyleLayer
to configure the appearance of each kind of shape inside the collection.A shape collection feature is known as a feature collection in GeoJSON.
Related examples
See the Add multiple shapes from a single shape source example to learn how to add shape data to your map using an
MGLShapeCollectionFeature
object.Declaration
Objective-C
@interface MGLShapeCollectionFeature : MGLShapeCollection <MGLFeature>
Swift
class MGLShapeCollectionFeature : MGLShapeCollection, MGLFeature